package com.ethan.cj.ssm.dao;

import com.ethan.cj.ssm.dao.provider.LogsDaoProvider;
import com.ethan.cj.ssm.entity.Logs;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 日志 dao层接口
 */
@Mapper
@Repository
public interface LogsDao {
    /**
     * 添加一条日志信息
     * @param logs 日志对象
     */
    @Insert("INSERT INTO `logs` (`lrunner` ,`ldateline` ,`lip` ,`loperation`) VALUES (#{lrunner} ,#{ldateline} ,#{lip} ,#{loperation})")
    void insertLogs(Logs logs);

    /**
     * 分页查询
     *
     * @param lrunner    查询条件: 操作者
     * @param lip        查询条件: ip地址
     * @param loperation 查询条件: 操作记录
     * @param offset 分页条件
     * @param limit 分页条件
     * @return 日志数据集合
     */
    List<Logs> selectLogs(@Param("lrunner") String lrunner, @Param("lip") String lip, @Param("loperation") String loperation, @Param("offset") int offset, @Param("limit") int limit);

    /**
     * 获取总条数
     *
     * @param lrunner    查询条件: 操作者
     * @param lip        查询条件: ip地址
     * @param loperation 查询条件: 操作记录
     * @return 总条数
     */
    @SelectProvider(type = LogsDaoProvider.class, method = "count")
    int count(@Param("lrunner") String lrunner, @Param("lip") String lip, @Param("loperation") String loperation);

    /**
     * 查询所有日志信息
     * @return 日志集合
     */
    @Select("SELECT * FROM `logs`")
    List<Logs> logsList();
}
